﻿Write-Host "功能：将所有文件夹下的文件移动到 Result 目录下，以文件名前缀（下划线_前）为名称的文件夹中"
Read-Host "按 Enter 键开始"

# 记录开始时间
$startTime = Get-Date

# 创建 Result 目录（如果不存在）
$ResultDir = Join-Path $PSScriptRoot "Result"
if (!(Test-Path $ResultDir)) {
    New-Item -ItemType Directory -Path $ResultDir | Out-Null
}

# 初始化文件计数
$fileCount = 0

# 遍历当前目录下的所有子目录（排除 Result 文件夹）
Get-ChildItem -Directory | Where-Object { $_.Name -ne "Result" } | ForEach-Object {
    $folder = $_.FullName
    Write-Host "正在处理文件夹：$($_.Name)"

    # 遍历子文件
    Get-ChildItem -Path $folder -File | ForEach-Object {
        $fileName = $_.Name
        # 判断文件名是否包含下划线
        if ($fileName -like "*_*") {
            # 取前缀
            $prefix = $fileName.Split("_")[0]
            $destDir = Join-Path $ResultDir $prefix

            # 创建目标目录（如果不存在）
            if (!(Test-Path $destDir)) {
                New-Item -ItemType Directory -Path $destDir | Out-Null
            }

            # 移动文件
            Move-Item -Path $_.FullName -Destination $destDir

            # 更新计数
            $fileCount++
        }
    }
}

# 记录结束时间并计算耗时（毫秒）
$endTime = Get-Date
$elapsed = ($endTime - $startTime).TotalSeconds

Write-Host "处理完成，总计处理文件数：$fileCount（耗时 $([math]::Round($elapsed, 3)) 秒）"
Read-Host "按 Enter 键关闭"